/*
 * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */

package java.lang;

/**
 * 断言状态指令的集合（例如"在包 p 中启用断言"或"在类 c 中禁用断言"）。
 * 此类由 JVM 用于传达由 <tt>java</tt> 命令行标志 <tt>-enableassertions</tt>
 * (<tt>-ea</tt>) 和 <tt>-disableassertions</tt> (<tt>-da</tt>) 隐含的断言状态指令。
 *
 * @since  1.4
 * @author Josh Bloch
 */
class AssertionStatusDirectives {
    /**
     * 要启用或禁用断言的类。
     * 此数组中的字符串是完全限定的类名（例如，"com.xyz.foo.Bar"）。
     */
    String[] classes;

    /**
     * 与 <tt>classes</tt> 并行的数组，指示每个类是否要启用或禁用断言。
     * <tt>classEnabled[i]</tt> 的值为 <tt>true</tt> 表示由 <tt>classes[i]</tt>
     * 命名的类应该启用断言；值为 <tt>false</tt> 表示应该禁用断言。
     * 此数组必须与 <tt>classes</tt> 具有相同数量的元素。
     *
     * <p>在同一个类存在冲突指令的情况下，给定类的最后一个指令获胜。
     * 换句话说，如果字符串 <tt>s</tt> 在 <tt>classes</tt> 数组中多次出现，
     * 且 <tt>i</tt> 是使 <tt>classes[i].equals(s)</tt> 成立的最高整数，
     * 则 <tt>classEnabled[i]</tt> 指示是否在类 <tt>s</tt> 中启用断言。
     */
    boolean[] classEnabled;

    /**
     * 要启用或禁用断言的包树。
     * 此数组中的字符串是完整或部分包名（例如，"com.xyz" 或 "com.xyz.foo"）。
     */
    String[] packages;

    /**
     * 与 <tt>packages</tt> 并行的数组，指示每个包树是否要启用或禁用断言。
     * <tt>packageEnabled[i]</tt> 的值为 <tt>true</tt> 表示由 <tt>packages[i]</tt>
     * 命名的包树应该启用断言；值为 <tt>false</tt> 表示应该禁用断言。
     * 此数组必须与 <tt>packages</tt> 具有相同数量的元素。
     *
     * 在同一个包树存在冲突指令的情况下，给定包树的最后一个指令获胜。
     * 换句话说，如果字符串 <tt>s</tt> 在 <tt>packages</tt> 数组中多次出现，
     * 且 <tt>i</tt> 是使 <tt>packages[i].equals(s)</tt> 成立的最高整数，
     * 则 <tt>packageEnabled[i]</tt> 指示是否在包树 <tt>s</tt> 中启用断言。
     */
    boolean[] packageEnabled;

    /**
     * 非系统类中的断言是否默认启用。
     */
    boolean deflt;
}
